﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using BLLCuentasWeb;
using Seguridad.Encriptación;

namespace CuentasWeb.Clases
{
    public class CajaFuerte
    {
        public static void CargarNuevaCuenta(CW_Cuenta nuevaCuenta)
        {
            BLLCuenta bll = new BLLCuenta();
            bll.CargarNueva(nuevaCuenta);
            bll.GuardarCambios();
        }

        public static List<CW_Cuenta> TraerCuentas(string nombreUsuario, int idDominio)
        {
            BLLCuenta bll = new BLLCuenta();
            List<CW_Cuenta> cuentas = bll.TraerCuentas(nombreUsuario, idDominio);
            List<int> pijasRepetidas = new List<int>();

            foreach (CW_Cuenta cuenta in cuentas)
            {
                cuenta.Contraseña = string.Empty;

                if (!pijasRepetidas.Contains(cuenta.IdDominio))
                {
                    cuenta.CW_Dominio.Dominio = Utilidades.Encriptador.Desencriptar(cuenta.CW_Dominio.Dominio);
                    pijasRepetidas.Add(cuenta.IdDominio);
                }
            }

            return cuentas;
        }

        public static void ModificarCuenta(CW_Cuenta cuenta)
        {
            BLLCuenta bll = new BLLCuenta();

            cuenta.Contraseña = Utilidades.Encriptador.Encriptar(cuenta.Contraseña);
            cuenta.NombreUsuario = Utilidades.Encriptador.Encriptar(cuenta.NombreUsuario);

            bll.ModificarCuenta(cuenta);
            bll.GuardarCambios();
        }

        public static void EliminarCuenta(CW_Cuenta cuenta)
        {
            BLLCuenta bll = new BLLCuenta();
            bll.EliminarCuenta(cuenta);
            bll.GuardarCambios();
        }

        internal static CW_Cuenta TraerCuenta(int idCuenta)
        {
            BLLCuenta bll = new BLLCuenta();
            CW_Cuenta cuenta = bll.TraerCuenta(idCuenta);

            cuenta.NombreUsuario = Utilidades.Encriptador.Desencriptar(cuenta.NombreUsuario);
            cuenta.Contraseña = Utilidades.Encriptador.Desencriptar(cuenta.Contraseña);

            return cuenta;
        }


        public static List<CW_Dominio> TraerDominios()
        {
            BLLDominio bll = new BLLDominio();
            List<CW_Dominio> dominios = bll.TraerDominios();

            foreach (CW_Dominio dominio in dominios)
                dominio.Dominio = Utilidades.Encriptador.Desencriptar(dominio.Dominio);

            return dominios.OrderBy(d => d.Dominio).ToList();
        }

        public static void CargarNuevoDominio(CW_Dominio nuevoDominio)
        {
            BLLDominio bll = new BLLDominio();
            nuevoDominio.Dominio = Utilidades.Encriptador.Encriptar(nuevoDominio.Dominio);
            bll.CargarDominio(nuevoDominio);
            bll.GuardarCambios();
        }

        public static void ModificarDominio(CW_Dominio dominio)
        {
            dominio.Dominio = Utilidades.Encriptador.Encriptar(dominio.Dominio);

            BLLDominio bll = new BLLDominio();
            bll.ModificarDominio(dominio);
            bll.GuardarCambios();
        }

        public static void EliminarDominio(CW_Dominio dominio)
        {
            BLLDominio bll = new BLLDominio();
            bll.EliminarDominio(dominio.IdDominio);
            bll.GuardarCambios();
        }
    }
}